C64 kernal ROM differencesFrom: jopi@zombie.oulu.fi (Jouko Valta)
Newsgroups: comp.sys.cbm
Subject: C64 Revisions (Marko Makela strikes back)
Date: 17 Jun 1994 14:13:26 GMT
Organization: Unixverstas Olutensin, Dept. of Overloaded Computers
Lines: 361
6.2 Commodore 64 KERNAL ROM versions.
Below is information on differences between the Commodore 64 KERNAL revisions 
R1, R2, R3 and the Commodore SX-64 and the Commodore 4064 ROMs. The 
chronological order must be R1, R2, 4064, R3 and SX-64. 
The KERNAL ROM R1 was obviously used only in early NTSC systems. It lacks the 
PAL/NTSC detection, and always uses white color while clearing the screen. The 
white color feature is from the VIC-20 ROM, but the VIC had a white background 
by default. Thus, this feature can be listed as a bug. The CIA 1 timer A will 
always divide the system clock through $411C == 16668. The other ROMs use the 
values $4026 an $4296, depending on the system version (PAL/NTSC), so their 
interrupt frequency is 985248 Hz / 16422 == 59.996 Hz or 1022727 Hz / 17046 == 
59.998 Hz. Note that both clock divisor values differ from the value used in the 
KERNAL R1. 
The PAL/NTSC flag ($2A6) affects the RS-232 timer settings as well. It seems 
that the new RS-232 tables for the PAL have been created on the upper BASIC 
interpreter area ($E000--$E4FF), from the address $E4EC on. Surprisingly also 
the original NTSC tables have been changed. Very probably the units running the 
KERNAL R1 had a slower clock frequency. Extrapolating from the interrupt timer 
values, they ran at 1.0000 MHz. Now this makes sense, since the first (NTSC) 
video chips had 262 lines per frame and 64 cycles per line. The frame rate was 
thus 1 MHz / 262 / 64 == 59.637 Hz. The newer NTSC units run at 1022727 Hz and 
draw 263 lines per frame and use 65 cycles per line. This produces a frame rate 
of 59.826 Hz. Well, now it is very obvious that there has been at least one 
mother board type that has only been used on NTSC units. Probably the processor 
clock was created from a 8 MHz chrystal frequency, which served as the dot 
clock. 
In the newer NTSC units, the video chip still produces the processor clock by 
dividing the dot clock by eight. An auxiliary clock signal will be generated by 
dividing the chrystal frequency of 14318181 Hz by 14. This signal is actively 
being compared with the processor clock and it guarantees the correct frequency 
of dot clock, 8/14 of the crystal frequency. 
The PAL systems have been developed later, and they always run at the same clock 
frequency, 17734472 Hz / 18. The frame rate has always been 17734472 Hz / 312 / 
63 == 50.125 Hz on those puppies. 
The changes in the latter ROM revisions were mainly cosmetical. There were some 
bugs corrected in the R3 revision, though. 
  Format for list:

  Address: 901227-01 (Commodore 64 KERNAL R1, $FF80 content $AA)
           901227-02 (Commodore 64 KERNAL R2, $FF80 content $00)
           901227-03 (Commodore 64 KERNAL R3, $FF80 content $03)
           ??????-?? (SX-64 or DX-64 KERNAL, $FF80 content $43)
           ??????-?? (4064 aka PET 64 aka Educator 64, $FF80 content $64)
 
  E119:  C9, FF
         AD, E4 
         AD, E4 
         AD, E4 
         AD, E4

  E42D:  20, 1E, AB
         20, 1E, AB
         20, 1E, AB
         20, 1E, AB
         4C, 41, E4

  E477:  20, 20, 2A, 2A, 2A, 2A, 20, 43, 4F, 4D, 4D, 4F, 44, 4F, 52, 45,
         20, 20, 2A, 2A, 2A, 2A, 20, 43, 4F, 4D, 4D, 4F, 44, 4F, 52, 45,
         20, 20, 2A, 2A, 2A, 2A, 20, 43, 4F, 4D, 4D, 4F, 44, 4F, 52, 45,
         20, 20, 20, 2A, 2A, 2A, 2A, 2A, 20, 20, 53, 58, 2D, 36, 34, 20,
         2A, 2A, 2A, 2A, 20, 43, 4F, 4D, 4D, 4F, 44, 4F, 52, 45, 20, 34,

  -:     20, 36, 34, 20, 42, 41, 53, 49, 43, 20, 56, 32, 20, 2A, 2A, 2A,
         20, 36, 34, 20, 42, 41, 53, 49, 43, 20, 56, 32, 20, 2A, 2A, 2A,
         20, 36, 34, 20, 42, 41, 53, 49, 43, 20, 56, 32, 20, 2A, 2A, 2A,
         42, 41, 53, 49, 43, 20, 56, 32, 2E, 30, 20, 20, 2A, 2A, 2A, 2A,
         30, 36, 34, 20, 20, 42, 41, 53, 49, 43, 20, 56, 32, 2E, 30, 20,

  -:     2A, 0D, 0D, 20, 36, 34, 4B, 20, 52, 41, 4D, 20, 53, 59, 53, 54,
         2A, 0D, 0D, 20, 36, 34, 4B, 20, 52, 41, 4D, 20, 53, 59, 53, 54,
         2A, 0D, 0D, 20, 36, 34, 4B, 20, 52, 41, 4D, 20, 53, 59, 53, 54,
         2A, 0D, 0D, 20, 36, 34, 4B, 20, 52, 41, 4D, 20, 53, 59, 53, 54,
         2A, 2A, 2A, 2A, 0D, 0D, 00, 20, 20, 20, 20, 20, 20, 20, 20, 20,

  -:     45, 4D, 20, 20, 00, 2B
         45, 4D, 20, 20, 00, 5C
         45, 4D, 20, 20, 00, 81
         45, 4D, 20, 20, 00, B3
         20, 20, 20, 20, 20, 63

  E4AD:  AA, AA, AA, AA, AA, AA, AA, AA, AA, AA
         48, 20, C9, FF, AA, 68, 90, 01, 8A, 60
         48, 20, C9, FF, AA, 68, 90, 01, 8A, 60
         48, 20, C9, FF, AA, 68, 90, 01, 8A, 60
         48, 20, C9, FF, AA, 68, 90, 01, 8A, 60

  E4C8:  AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,
         AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,
         AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, 85, A9, A9, 01, 85,
         AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, 85, A9, A9, 01, 85,
         2C, 86, 02, 30, 0A, A9, 00, A2, 0E, 9D, 20, D0, CA, 10, FA, 4C,

  -:     AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,
         AA, AA, AD, 21, D0, 91, F3, 60, 69, 02, A4, 91, C8, D0, 04, C5,
         AB, 60, AD, 86, 02, 91, F3, 60, 69, 02, A4, 91, C8, D0, 04, C5,
         AB, 60, AD, 86, 02, 91, F3, 60, 69, 02, A4, 91, C8, D0, 04, C5,
         87, EA, AD, 21, D0, 91, F3, 60, 69, 02, A4, 91, C8, D0, 04, C5,

  -:     AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,
         A1, D0, F7, 60, 19, 26, 44, 19, 1A, 11, E8, 0D, 70, 0C, 06, 06,
         A1, D0, F7, 60, 19, 26, 44, 19, 1A, 11, E8, 0D, 70, 0C, 06, 06,
         A1, D0, F7, 60, 19, 26, 44, 19, 1A, 11, E8, 0D, 70, 0C, 06, 06,
         A1, D0, F7, 60, 19, 26, 44, 19, 1A, 11, E8, 0D, 70, 0C, 06, 06,

  -:     AA, AA, AA, AA, AA, AA, AA, AA
         D1, 02, 37, 01, AE, 00, 69, 00
         D1, 02, 37, 01, AE, 00, 69, 00
         D1, 02, 37, 01, AE, 00, 69, 00
         D1, 02, 37, 01, AE, 00, 69, 00

  E535:  0E
         0E
         0E
         06
         01

  E57C:  B5, D9, 29, 03, 0D, 88, 02, 85, D2, BD, F0, EC, 85, D1, A9, 27,
         B5, D9, 29, 03, 0D, 88, 02, 85, D2, BD, F0, EC, 85, D1, A9, 27,
         20, F0, E9, A9, 27, E8, B4, D9, 30, 06, 18, 69, 28, E8, 10, F6,
         20, F0, E9, A9, 27, E8, B4, D9, 30, 06, 18, 69, 28, E8, 10, F6,
         20, F0, E9, A9, 27, E8, B4, D9, 30, 06, 18, 69, 28, E8, 10, F6,

  -:     E8, B4, D9, 30, 06, 18, 69, 28, E8, 10, F6, 85, D5, 60
         E8, B4, D9, 30, 06, 18, 69, 28, E8, 10, F6, 85, D5, 60
         85, D5, 4C, 24, EA, E4, C9, F0, 03, 4C, ED, E6, 60, EA
         85, D5, 4C, 24, EA, E4, C9, F0, 03, 4C, ED, E6, 60, EA
         85, D5, 4C, 24, EA, E4, C9, F0, 03, 4C, ED, E6, 60, EA

  E5EF:  09
         09
         09
         0F
         09

  E5F4:  E6, EC
         E6, EC
         E6, EC
         D7, F0
         E6, EC

  E622:  ED, E6
         ED, E6
         91, E5
         91, E5
         91, E5

  EA07:  A9, 20, 91, D1, A9, 01, 91, F3, 88, 10, F5, 60
         A9, 20, 91, D1, 20, DA, E4, EA, 88, 10, F5, 60
         20, DA, E4, A9, 20, 91, D1, 88, 10, F6, 60, EA
         20, DA, E4, A9, 20, 91, D1, 88, 10, F6, 60, EA
         A9, 20, 91, D1, 20, DA, E4, EA, 88, 10, F5, 60

  ECCA:  1B, 00
         9B, 37
         9B, 37
         9B, 37
         9B, 37

  ECD2:  00
         0F
         0F
         0F
         0F

  ECD9:  0E, 06, 01, 02, 03, 04, 00, 01, 02, 03, 04, 05, 06, 07
         0E, 06, 01, 02, 03, 04, 00, 01, 02, 03, 04, 05, 06, 07
         0E, 06, 01, 02, 03, 04, 00, 01, 02, 03, 04, 05, 06, 07
         03, 01, 01, 02, 03, 04, 00, 01, 02, 03, 04, 05, 06, 07
         00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00

  EF94:  85, A9, 60
         85, A9, 60
         4C, D3, E4
         4C, D3, E4
         85, A9, 60

  F0D8:  0D, 50, 52, 45, 53, 53, 20, 50, 4C, 41, 59, 20, 4F, 4E, 20
         0D, 50, 52, 45, 53, 53, 20, 50, 4C ,41, 59, 20, 4F, 4E, 20
         0D, 50, 52, 45, 53, 53, 20, 50, 4C ,41, 59, 20, 4F, 4E, 20
         4C, 4F, 41, 44, 22, 3A, 2A, 22, 2C, 38, 0D, 52, 55, 4E, 0D
         0D, 50, 52, 45, 53, 53, 20, 50, 4C ,41, 59, 20, 4F, 4E, 20

  F387:  03
         03
         03
         08
         03

  F428:  D0, 0B, AD, 95, 02, 0A, A8, AD, 96, 02, 4C, 3F, F4, 0A, AA, BD,
         F0, 1C, 0A, AA, AD, A6, 02, D0, 09, BC, C1, FE, BD, C0, FE, 4C,
         F0, 1C, 0A, AA, AD, A6, 02, D0, 09, BC, C1, FE, BD, C0, FE, 4C,
         F0, 1C, 0A, AA, AD, A6, 02, D0, 09, BC, C1, FE, BD, C0, FE, 4C,
         F0, 1C, 0A, AA, AD, A6, 02, D0, 09, BC, C1, FE, BD, C0, FE, 4C,

  -:     C0, FE, 0A, A8, BD, C1, FE, 2A, 48, 98, 69, C8, 8D, 99, 02, 68,
         40, F4, BC, EB, E4, BD, EA, E4, 8C, 96, 02, 8D, 95, 02, AD, 95,
         40, F4, BC, EB, E4, BD, EA, E4, 8C, 96, 02, 8D, 95, 02, AD, 95,
         40, F4, BC, EB, E4, BD, EA, E4, 8C, 96, 02, 8D, 95, 02, AD, 95,
         40, F4, BC, EB, E4, BD, EA, E4, 8C, 96, 02, 8D, 95, 02, AD, 95,

  -:     69, 00, 8D, 9A, 02
         02, 0A, 20, 2E, FF
         02, 0A, 20, 2E, FF
         02, 0A, 20, 2E, FF
         02, 0A, 20, 2E, FF

  F459:  4C
         20
         20
         20
         20

  F4B7:  7B
         7B
         7B
         F7
         7B

  F5F9:  5F
         5F
         5F
         F7
         5F

  F762:  91, C9, FF, F0, FA
         A1, 20, E0, E4, EA
         A1, 20, E0, E4, EA
         A1, 20, E0, E4, EA
         A1, 20, E0, E4, EA

  F81F:  2F
         2F
         2F
         2F
         2B

  F82C:  2F
         2F
         2F
         2F
         2B

  FCFC:  18, E5
         5B, FF
         5B, FF
         5B, FF
         5B, FF

  FDDD:  A9, 1B, 8D, 04, DC, A9, 41, 8D, 05, DC, A9, 81, 8D, 0D, DC, AD,
         AD, A6, 02, F0, 0A, A9, 25, 8D, 04, DC, A9, 40, 4C, F3, FD, A9,
         AD, A6, 02, F0, 0A, A9, 25, 8D, 04, DC, A9, 40, 4C, F3, FD, A9,
         AD, A6, 02, F0, 0A, A9, 25, 8D, 04, DC, A9, 40, 4C, F3, FD, A9,
         AD, A6, 02, F0, 0A, A9, 25, 8D, 04, DC, A9, 40, 4C, F3, FD, A9,

  -:     0E, DC, 29, 80, 09, 11, 8D, 0E, DC, 4C, 8E, EE
         95, 8D, 04, DC, A9, 42, 8D, 05, DC, 4C, 6E, FF
         95, 8D, 04, DC, A9, 42, 8D, 05, DC, 4C, 6E, FF
         95, 8D, 04, DC, A9, 42, 8D, 05, DC, 4C, 6E, FF
         95, 8D, 04, DC, A9, 42, 8D, 05, DC, 4C, 6E, FF

  FEC2:  AC, 26, A7, 19, 5D, 11, 1F, 0E, A1, 0C, 1F, 06, DD, 02, 3D, 01,
         C1, 27, 3E, 1A, C5, 11, 74, 0E, ED, 0C, 45, 06, F0, 02, 46, 01,
         C1, 27, 3E, 1A, C5, 11, 74, 0E, ED, 0C, 45, 06, F0, 02, 46, 01,
         C1, 27, 3E, 1A, C5, 11, 74, 0E, ED, 0C, 45, 06, F0, 02, 46, 01,
         C1, 27, 3E, 1A, C5, 11, 74, 0E, ED, 0C, 45, 06, F0, 02, 46, 01,

  -:     B2, 00, 6C
         B8, 00, 71
         B8, 00, 71
         B8, 00, 71
         B8, 00, 71

  FF08:  93, 02, 29, 0F, D0, 0C, AD, 95, 02, 8D, 06, DD, AD, 96, 02, 4C,
         95, 02, 8D, 06, DD, AD, 96, 02, 8D, 07, DD, A9, 11, 8D, 0F, DD,
         95, 02, 8D, 06, DD, AD, 96, 02, 8D, 07, DD, A9, 11, 8D, 0F, DD,
         95, 02, 8D, 06, DD, AD, 96, 02, 8D, 07, DD, A9, 11, 8D, 0F, DD,
         95, 02, 8D, 06, DD, AD, 96, 02, 8D, 07, DD, A9, 11, 8D, 0F, DD,

  -:     25, FF, 0A, AA, BD, C0, FE, 8D, 06, DD, BD, C1, FE, 8D, 07, DD,
         A9, 12, 4D, A1, 02, 8D, A1, 02, A9, FF, 8D, 06, DD, 8D, 07, DD,
         A9, 12, 4D, A1, 02, 8D, A1, 02, A9, FF, 8D, 06, DD, 8D, 07, DD,
         A9, 12, 4D, A1, 02, 8D, A1, 02, A9, FF, 8D, 06, DD, 8D, 07, DD,
         A9, 12, 4D, A1, 02, 8D, A1, 02, A9, FF, 8D, 06, DD, 8D, 07, DD,

  -:     A9, 11, 8D, 0F, DD, A9, 12, 4D, A1, 02, 8D, A1, 02, A9, FF, 8D,
         AE, 98, 02, 86, A8, 60, AA, AD, 96, 02, 2A, A8, 8A, 69, C8, 8D,
         AE, 98, 02, 86, A8, 60, AA, AD, 96, 02, 2A, A8, 8A, 69, C8, 8D,
         AE, 98, 02, 86, A8, 60, AA, AD, 96, 02, 2A, A8, 8A, 69, C8, 8D,
         AE, 98, 02, 86, A8, 60, AA, AD, 96, 02, 2A, A8, 8A, 69, C8, 8D,

  -:     06, DD, 8D, 07, DD, AE, 98, 02, 86, A8, 60
         99, 02, 98, 69, 00, 8D, 9A, 02, 60, EA, EA
         99, 02, 98, 69, 00, 8D, 9A, 02, 60, EA, EA
         99, 02, 98, 69, 00, 8D, 9A, 02, 60, EA, EA
         99, 02, 98, 69, 00, 8D, 9A, 02, 60, EA, EA

  FF5B:  AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,
         20, 18, E5, AD, 12, D0, D0, FB, AD, 19, D0, 29, 01, 8D, A6, 02,
         20, 18, E5, AD, 12, D0, D0, FB, AD, 19, D0, 29, 01, 8D, A6, 02,
         20, 18, E5, AD, 12, D0, D0, FB, AD, 19, D0, 29, 01, 8D, A6, 02,
         20, 18, E5, AD, 12, D0, D0, FB, AD, 19, D0, 29, 01, 8D, A6, 02,

  -:     AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA, AA,
         4C, DD, FD, A9, 81, 8D, 0D, DC, AD, 0E, DC, 29, 80, 09, 11, 8D,
         4C, DD, FD, A9, 81, 8D, 0D, DC, AD, 0E, DC, 29, 80, 09, 11, 8D,
         4C, DD, FD, A9, 81, 8D, 0D, DC, AD, 0E, DC, 29, 80, 09, 11, 8D,
         4C, DD, FD, A9, 81, 8D, 0D, DC, AD, 0E, DC, 29, 80, 09, 11, 8D,

  -:     AA, AA, AA, AA, AA
         0E, DC, 4C, 8E, EE
         0E, DC, 4C, 8E, EE
         0E, DC, 4C, 8E, EE
         0E, DC, 4C, 8E, EE

  FF80:  AA
         00
         03
         43
         64

  FF82:  18, E5
         5B, FF
         5B, FF
         5B, FF
         5B, FF

  FFF8:  42, 59
         42, 59
         42, 59
         42, 59
         00, 00
